package com.xunfang.service.impl;

import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.xunfang.bean.User;
import com.xunfang.mapper.UserMapper;
import com.xunfang.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @author yellow Docter
 * @date 2023 -10-17
 * @desc
 */
@Service
public class UserServiceImpl implements IUserService {

    @Autowired
    private UserMapper userMapper;

    @Override
    public User findUserById(Integer id) {
        return userMapper.findUserById(id);
    }

    @Override
    public void addUser(User user) {
        userMapper.addUser(user);
    }

    @Override
    public int deleteUserById(Integer id) {
        return userMapper.deleteUserById(id);
    }

    @Override
    public List<User> pageUsers(Integer currentPage, Integer pageSize) {
        //分页  start 分页开始的位置 需要计算
        // select * from car type limit (currentPage - 1) * pageSize,pageSize
        int start = (currentPage - 1) * pageSize;

        // 调用mapper
        List<User> data = userMapper.pageUsers(start,pageSize);

        return data;
    }

    //使用分页插件 进行分页
    @Override
    public List<User> pageUsersPlus(Integer currentPage, Integer pageSize) {

        //PageHelper.startPage(currentPage, pageSize) 分页查询
        //查询所有 通过封装进行分页
        //mybatis 底层有插件 (拦截器  把sql进行拦截 拼接 limit 关键字 进行分页操作 、分页完毕后 封装数据到 Page
        // 对象中 )
        Page<User> page = PageHelper.startPage(currentPage, pageSize).doSelectPage(
                // 查询所有
                () -> userMapper.findUsers()
        );

        //拿到分页数据 从page中获取
        //分页数据
        List<User> data = page.getResult();
        long total = page.getTotal();
        System.out.println("总数:total = " + total);
        int pages = page.getPages();
        System.out.println("分页总数:pages = " + pages);

        return data;
    }

}
